import { createSlice } from '@reduxjs/toolkit';
import { http } from '@/utils';
import { getToken,setToken as _setToken, removeToken } from '@/utils/token';
import { getProfileAPI, loginAPI } from '@/apis/user';


const userStore= createSlice({
    name:'user',
    //数据状态
    initialState:{
        token:getToken()||'',
        userInfo:{}
    },
    //同步修改方法
    reducers:{
        setToken(state,action){
            state.token=action.payload
            _setToken(state.token)
        },
        setUserInfo(state,action){
            state.userInfo=action.payload
        },
        clearUserInfo(state){
            state.token=''
            state.userInfo={}
            removeToken()
        }
    }
})

//解构出actionCreater
const {setToken,setUserInfo,clearUserInfo}=userStore.actions

//获取reducer函数，用来组成根store
const userReducer=userStore.reducer

//异步方法封装
const fetchLogin=(loginForm)=>{
    return async(dispatch)=>{
        const res=await loginAPI(loginForm)
        dispatch(setToken(res.data.token))
    }
}

const fetchUserInfo=()=>{
    return async(dispatch)=>{
        const res=await getProfileAPI()
        dispatch(setUserInfo(res.data))
    }
}

export{fetchLogin,fetchUserInfo,clearUserInfo}

export {setToken}

export default userReducer